<include file="Public:header"/>
<script type="text/javascript" src="__WEBPUBLIC__/Home/js/base.js"></script>
<div class="container">
	<div class="toolbar project clearfix" style="margin: 0">
		<span>{$project_info.p_name}<span style="color:#09c; text-decoration:underline; padding-left:10px">{$project_info.p_api_head}</span></span>
		<input type="hidden" name="p_id" value="{$project_info.p_id}" id="p_id" />
        <div style="float:right;padding-right: 50px;">
            <form action="{:U('Index/exportExcel')}" method="post">
                <!-- 选择字段 -->
                <div style="line-height: 30px;display: none;">
                    <input type="checkbox" value="项目名称||p_name" name="fields_data[]" checked/>&nbsp;项目名称　
                    <input type="checkbox" value="模块名称||mo_name" name="fields_data[]" checked/>&nbsp;模块名称　
                    <input type="checkbox" value="方法名称||f_zh_name" name="fields_data[]" checked/>&nbsp;方法名称　
                    <input type="checkbox" value="接口URL||f_url" name="fields_data[]" checked/>&nbsp;接口URL　
                    <input type="checkbox" value="传递方式||f_type" name="fields_data[]" checked/>&nbsp;传递方式　
                    <input type="checkbox" value="参数名称||pa_name" name="fields_data[]" checked/>&nbsp;参数名称　
                    <input type="checkbox" value="参数类型||p_type" name="fields_data[]" checked/>&nbsp;参数类型　
                    <input type="checkbox" value="能否为空||p_is_null" name="fields_data[]" checked/>&nbsp;能否为空　
                    <input type="checkbox" value="参数描述||p_desc" name="fields_data[]" checked/>&nbsp;参数描述　
                    <input type="checkbox" value="成功返回||f_success" name="fields_data[]" checked/>&nbsp;成功返回　
                    <input type="checkbox" value="失败返回||f_error" name="fields_data[]" checked/>&nbsp;失败返回　

                    <input type="hidden" name="p_id" value="{$project_info.p_id}" />
                </div>
                <button class="btn btn-primary" type="submit">导出该项目所有API</button>
            </form>
        </div>
	</div>
</div>
<div class="container" id="wrapper">
	<div class="bs-sidebar">
		<ul class="nav bs-sidenav" id="left-menu">
		<volist name="module_list" id="vo">
			<li class="mo-li" id="mo-li-{$vo.mo_id}">
				<if condition="$m_nickname">
				<span class="icon glyphicon glyphicon-plus" title="增加方法" data-id="{$vo.mo_id}" data-name="{$vo.mo_e_name}"></span>
				<span class="icon glyphicon glyphicon-remove remove-module" title="删除当前模块" data-id="{$vo.mo_id}"></span>
				</if>
				<a href="javascript:;" class="nav-top-item">{$vo.mo_name}</a>
				<ul class="nav" id="ul-{$vo.mo_id}">
					<volist name="vo['function_list']" id="voo">
						<li>
                            <a href="{:U('Function/index',array('p_id'=>$_GET['p_id'],'mo_id'=>$voo['mo_id'],'f_id'=>$voo['f_id']))}">{$voo.f_zh_name}</a>
							<if condition="$m_nickname">
							<span class="icon glyphicon glyphicon-remove remove-fun" title="删除当前方法" data-id="{$voo.f_id}"></span>
							</if>
						</li>
					</volist>
				</ul>
			</li>
		</volist>
		</ul>
		<if condition="$m_nickname">
		<p id="add_text" class="hidden">
			<input type="text" name="mo_name" value="" id="mo_name" placeholder="模块名称" /><br />
			<input type="text" name="mo_e_name" value="" id="mo_e_name" placeholder="模块英文名称" style="margin-top:10px" />
		</p>
		<button type="button" class="btn btn-primary" id="addModuleShow">添加模块</button>
		</if>
	</div>
		
	<div class="content">
		<div class="content-text" id="content-text">
			<h1>使用说明&nbsp;<span style="color: red">首次使用请务必认真阅读</span></h1>
			<if condition="session('M_TYPE') eq 2">
			<h2>总则：</h2>
			<p>随着公司APP业务的加大，我们接触了很多能自己提供API的客户，但是各自的书写方法都不一样，这导致我们后期在开发APP的时候需要付出很多时间沟通接口的问题，浪费了彼此的时间。介于此，我们希望您按照要求认真填写自己的项目API，并使用测试工具对自己的接口逐个进行测试，进而节约沟通成本。另外本系统为beta版因此部分功能实现的并不完美，体验也不是那么爽，敬请谅解，天迅达科技愿于你合作共赢！</p>
			<h2>第一步：创建模块（对象/控制器）</h2>
			<p>请为项目创建一个模块（对象/控制器），模块名称为对象名称，英文名称为控制器名称，请针对自己的项目认真添加
如果您的程序没有PATHINFO的分组和模块概念，请务必认真检查接口URL。</p>
			<h2>第二步：创建方法</h2>
			<p>请在模块下为控制器创建请求方法，创建方法时英文模块名称和英文方法名称将会自动拼接在请求URL中，当然请求URL也支持自定义，如果拼接有误请手动填写请求URL。请认真填写请求参数和参数说明这将关乎到ApiTools能否正常运作。</p>
			<h2>第三步：方法返回</h2>
                <p>1，请通过json返回数据</p>
                <p>2，每个方法的返回值固定有三段即：</br>
                    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flag：验证状态，成功为success，失败为error；</br>
                    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message：错误原因或成功输出的信息；</br>
                    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data：返回的数据。
                </p>
                <p>3，返回的图片或文件请务必转换为网络路径，多图片时请分别添加网络路径然后使用英文逗号将路径分开（此处要特别注意管理员使用web在线编辑器时上传的本地图片路径转换）</p>
                <p>4，请务必保证任何情况下都要有数据返回，数据不合法就要报错</p>
                <p>5，在保证功能的前提下请使接口尽量的少</p>
                <p>6，编写之前请认真查看DEMO项目的接口，有问题或是提建议请随时沟通。</p>

                <else />

                <h2>总则：</h2>
                <p>随着公司APP业务的加大，我们开发了本API提交平台，用户更好的服务于我们的工作， 本平台beta版支持thinkphp书写的接口，以及使用其他程序编写的接口。为了更大限度的控制服务器端API的编写错误 我们开发ApiTools在线调试 工具，请认真填写模块名称、方法名称以及参数名称，并认真检查自动生成的URL是否正确。天迅达科技愿于你共同进步 ！</p>
                <h2>第一步：创建模块（对象/控制器）</h2>
                <p>请为项目创建一个模块（对象/控制器），模块名称为对象名称，英文名称为控制器名称，请针对自己的项目认真添加
                    如果您的程序没有PATHINFO的分组和模块概念，请务必认真检查接口URL。</p>
                <h2>第二步：创建方法</h2>
                <p>请在模块下为控制器创建请求方法，创建方法时英文模块名称和英文方法名称将会自动拼接在请求URL中，当然请求URL也支持自定义，如果拼接有误请手动填写请求URL。请认真填写请求参数和参数说明这将关乎到ApiTools能否正常运作。</p>
                <h2>第三步：方法返回</h2>
                <p>1，请通过json返回数据</p>
                <p>2，每个方法的返回值固定有三段即：</br>
                    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flag：验证状态，成功为success，失败为error；</br>
                    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message：错误原因或成功输出的信息；</br>
                    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data：返回的数据。
                </p>
                <p>3，返回的图片或文件请务必转换为网络路径，多图片时请分别添加网络路径然后使用英文逗号将路径分开（此处要特别注意管理员使用web在线编辑器时上传的本地图片路径转换）</p>
                <p>4，请务必保证任何情况下都要有数据返回，数据不合法就要报错</p>
                <p>5，在保证功能的前提下请使接口尽量的少</p>
                <p>6，编写之前请认真查看DEMO项目的接口，有问题或是提建议请随时沟通。</p>

            </if>
		</div>

        <div class="content-fixed hidden" id="content-fixed">
            <span class="close glyphicon glyphicon-remove " id="close"></span>
            <form action="{:U('Single/addFunction')}" method="post" class="form-horizontal" name="addFunction" role="form">
                <input type="hidden" name="mo_id" id="mo_id" data-id="" />
                <div class="form-group">
                    <label for="f_zh_name" class="col-sm-3 control-label"><em class="red">*</em>中文名称：</label>
                    <div class="col-sm-9">
                        <input type="text" class="form-control must" id="f_zh_name" name="f_zh_name" placeholder="例如：用户注册">
                    </div>
                </div>
                <div class="form-group">
                    <label for="f_name" class="col-sm-3 control-label"><em class="red">*</em>方法名称：</label>
                    <div class="col-sm-9">
                        <input type="text" class="form-control must" id="f_name" name="f_name" placeholder="例如：register">
                    </div>
                </div>
                <div class="form-group">
                    <label for="f_url" class="col-sm-3 control-label">请求URL：</label>
                    <div class="col-sm-9">
                        <input type="text" class="form-control" id="f_url" name="f_url" value="{$project_info.p_api_head}" style="width:600px; position:relative">
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label"><em class="red">*</em>请求类型：</label>
                    <div class="col-sm-9">
                        <div class="checkbox">
                            <input type="radio" name="f_type" value="0" class="f_type f_type22" checked/>&nbsp;GET&nbsp;&nbsp;
                            <input type="radio" name="f_type" value="1" class="f_type f_type22" />&nbsp;POST
                        </div>
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">参数：</label>
                    <div class="col-sm-9" id="plus-input">
                        <div class="checkbox" style="padding-bottom:8px;">
                            <input type="radio" value="0" name="isPa" id="noPa" />&nbsp;无参&nbsp;&nbsp;
                            <input type="radio" name="isPa" id="yPa" value="1" checked/>&nbsp;有参
                        </div>
                        <p id="pas" style="width:600px; position:relative">
                            <select style="width:10%;height: 30px;" name="p_type[]" class="p_type">
                                <option value="0" title="参数类型">文本</option>
                                <option value="1" title="参数类型">图片</option>
                            </select>
                            <input type="text" name="p_name[]" class="p_name p_name2" placeholder="参数名称" style="width:35%"/>
                            <select style="width:10%;height: 30px;" name="p_is_null[]" class="p_is_null p_is_null2">
                                <option value="0" class="是否为空">否</option>
                                <option value="1" class="是否为空">是</option>
                            </select>
                            <input type="text" name="default_val[]" class="default_val default_val2" placeholder="示例值" style="width:35%"/>
                            <span class="icon glyphicon glyphicon-plus" id="add-input"></span><br/>
                            <textarea name="p_desc[]" placeholder="参数描述" class="p_desc" style="width:92%; margin-top:10px"></textarea>
                        </p>
                    </div>
                </div>
                <div class="form-group">
                    <label for="f_success" class="col-sm-3 control-label get_data" style="padding-left:0px;padding-top:0px;margin-left:31px;width:97px;height:30px;line-height: 30px;font-weight:normal; cursor: pointer;color:#fff;border-radius:4px;background-color:#357ebd;border-color:#357ebd;display:block;" title="点击获取返回数据" ><em class="red">*</em>返回数据：</label>
                    <div class="col-sm-9">
                        <textarea placeholder="当您正确填写接口和参数后点击【返回数据】将能自动触发请求返回数据。请务必整理返回数据并详细说明每个字段的含义。列表数据请只保留一个单元。" class="form-control must" id="f_success" name="f_success" style="width:700px; height:200px"></textarea>
                    </div>
                </div>
                <div class="form-group">
                    <label for="f_desc" class="col-sm-3 control-label"><em class="red">*</em>方法描述：</label>
                    <div class="col-sm-9">
                        <textarea placeholder="如果该方法需要有强调和说明的地方请在此处进行详细说明" class="form-control must" id="f_desc" name="f_desc" style="width:700px;height:200px"></textarea>
                    </div>
                </div>
                <!--<div class="form-group">
                    <label for="f_error" class="col-sm-3 control-label"><em class="red">*</em>失败返回：</label>
                    <div class="col-sm-9">
                      <textarea type="text" class="form-control must" id="f_error" name="f_error" style="width:700px;height:200px"></textarea>
                    </div>
                </div>-->
                <div class="form-group">
                    <div class="col-sm-offset-3 col-sm-9">
                        <button type="submit" class="btn btn-primary" id="addFun">确认添加</button>
                    </div>
                </div>
            </form>
        </div>
	</div>
</div>

<script>
var addModule = "{:U('Single/addModule')}";
var addFunction = "{:U('Single/addFunction')}";
var delModule = "{:U('Single/deleteModule')}";
var delFunction = "{:U('Single/deleteFunction')}";
var linkUrl = "{:U('Function/index',array('p_id'=>$_GET['p_id']))}";
var pApiHead = "{$project_info.p_api_head}";//获取api链接头url
	$('#add-input').click(function(){
		var add = $(this).parents().find('#plus-input');
		createAddPa(add);
		$('#plus-input .glyphicon-minus').click(function(){
			var ps = $(this).parent();
			ps.remove();
		});
	});
	$('#noPa').click(function(){
		$('#pas').hide();
	});
	$('#yPa').click(function(){
		$('#pas').show();
	});

function createAddPa(add){
    var html = '<p style="width:600px; position:relative">';
    html+='<select style="width:10%;height: 30px;" name="p_type[]">';
    html+='<option value="0" title="参数类型">文本</option>';
    html+='<option value="1" title="参数类型">图片</option>';
    html+='</select> ';
    html+='<input type="text" class="p_name p_name2" name="p_name[]" placeholder="参数名称" style="width:35%"/> ';
    html+='<select style="width:10%;height: 30px;" name="p_is_null[]" class="p_is_null2"> ';
    html+='<option value="0" title="是否为空">否</option>';
    html+='<option value="1" title="是否为空">是</option>';
    html+='</select>';
    html+='&nbsp;<input type="text" name="default_val[]"  class="default_val default_val2" placeholder="示例值" style="width:35%"/> ';
    html+='<span class="icon glyphicon glyphicon-minus minus-input"></span>';
    html+='<textarea name="p_desc[]" style="width:92%; margin-top:10px" placeholder="参数描述"></textarea> ';
    html+='</p>';
    $(add).append(html);
}

$(".get_data").click(function(){
    $("#f_success").val("数据请求中，请稍后~~");
    var f_url = $('#f_url').val();
    var type = '';
    var zt = document.getElementsByClassName("f_type22");
    for(var i = 0;i < zt.length;i++){
        if(zt[i].checked){
            if(zt[i].value == 0){
                type +='get';
            }else{
                type +='post';
            }
        }
    }
    var paNameGroup = $('.p_name2');
    var paValGroup = $('.default_val2');
    var pIsNull2 = $('.p_is_null2');
    var request_str = '';
    $(paNameGroup).each(function(index, element){
        //request_str += element + '=' + paNameGroup.index;
        if($(pIsNull2[index]).val() == 0){
            if (index < ($(paNameGroup).length - 1)) {
                request_str += $(element).val() + '=' + $(paValGroup[index]).val() + '&';
            } else {
                request_str += $(element).val() + '=' + $(paValGroup[index]).val();
            }
        }

    });
    $(".send_data").html("通过" + type + "发送的请求数据" + request_str);
    $.ajax({
        url:"{:U('ApiTool/getInfo')}",
        type:'post',
        data:{url:f_url,type:type,paGroup:request_str},
        success:function(data){
            if(data.json_ch){
                $("#f_success").val(JSON.stringify(JSON.parse(data.json), null, "    "));
            }else{
                $("#f_success").val("接口返回异常，请仔细检查请求URL和提交参数~~");
            }

        }
    });
});

</script>
<include file="Public:footer"/>
